local fn = vim.fn

-- Automatically install packer
local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim"
if fn.empty(fn.glob(install_path)) > 0 then
	PACKER_BOOTSTRAP = fn.system({
		"git",
		"clone",
		"--depth",
		"1",
		"https://github.com/wbthomason/packer.nvim",
		install_path,
	})
	print("Installing packer close and reopen Neovim...")
	vim.cmd([[packadd packer.nvim]])
end

-- Autocommand that reloads neovim whenever you save the plugins.lua file
vim.cmd([[
  augroup packer_user_config
    autocmd!
    autocmd BufWritePost plugins.lua source <afile> | PackerSync
  augroup end
]])

-- Use a protected call so we don't error out on first use
local status_ok, packer = pcall(require, "packer")
if not status_ok then
	return
end

-- Have packer use a popup window
packer.init({
	display = {
		open_fn = function()
			return require("packer.util").float({ border = "rounded" })
		end,
	},
})

-- Install your plugins here
return packer.startup(function(use)
	-- My plugins here
	use("wbthomason/packer.nvim") -- Have packer manage itself
	use("nvim-lua/plenary.nvim") -- Useful lua functions used ny lots of plugins
	use("kyazdani42/nvim-web-devicons")
	use("kyazdani42/nvim-tree.lua")
	use("akinsho/bufferline.nvim")
	use("numToStr/Comment.nvim")
	use("folke/todo-comments.nvim")
	use("lukas-reineke/indent-blankline.nvim")
	use("rmagatti/auto-session")
	use("windwp/nvim-autopairs")
	use("simrat39/symbols-outline.nvim")
	use("nvim-lualine/lualine.nvim")
	use("SmiteshP/nvim-navic")
	use("famiu/bufdelete.nvim")

	use("neovim/nvim-lspconfig")
  use("ray-x/lsp_signature.nvim")
	-- cmp plugins
	use({
		"hrsh7th/nvim-cmp",
		-- commit = "dbc72290295cfc63075dab9ea635260d2b72f2e5",
	})
	use("hrsh7th/cmp-buffer") -- buffer completions
	use("hrsh7th/cmp-path") -- path completions
	use("hrsh7th/cmp-cmdline") -- cmdline completions
	use("saadparwaiz1/cmp_luasnip") -- snippet completions
	use("hrsh7th/cmp-nvim-lsp")
	use("hrsh7th/cmp-emoji")
	use("hrsh7th/cmp-nvim-lua")
	-- use("rcarriga/cmp-dap")
	-- snippets
	use("L3MON4D3/LuaSnip") --snippet engine
	use("rafamadriz/friendly-snippets") -- a bunch of snippets to use
	use("mfussenegger/nvim-dap")
	use("nvim-treesitter/nvim-treesitter")
	use("theHamsta/nvim-dap-virtual-text")
	use("rcarriga/nvim-dap-ui")

	use("jose-elias-alvarez/null-ls.nvim")

	use({ "rebelot/kanagawa.nvim", commit = "fc2e308" })

	use("ray-x/go.nvim")
	use("akinsho/toggleterm.nvim")

	use({ "nvim-telescope/telescope.nvim", tag = "0.1.0" })
	use({ "phaazon/hop.nvim", branch = "v2" }) -- optional but strongly recommended

	use({
		"lewis6991/gitsigns.nvim",
		tag = "release", -- To use the latest release (do not use this if you run Neovim nightly or dev builds!)
	})

	-- Automatically set up your configuration after cloning packer.nvim
	-- Put this at the end after all plugins
	if PACKER_BOOTSTRAP then
		require("packer").sync()
	end
end)
